package com.jc.ds.base.service;


import java.util.List;

/**********************************************
 * @version 1.0.1 <br/>
 *          说明：基本service
 **********************************************
 */
public interface BaseService<T, K> {
	/**
	 * @Title:add
	 * @Description:新增
	 * @param bean 实体
	 * @param isSaveNull 属性为空是否保存：true：保存；false：不保存
	 * @return int
	 * @throws Exception
	 */
	int add(T bean, boolean isSaveNull);

	/**
	 * @Title:remove
	 * @Description:根据主键id移除指定记录
	 * @param id 主键
	 * @return int 影响数
	 */
	int remove(K id);

	/**
	 * @Title:modify
	 * @Description:修改
	 * @param bean 实体
	 * @param isSaveNull 属性为空是否保存：true：保存；false：不保存
	 * @return int
	 */
	int modify(T bean, boolean isSaveNull);

	/**
	 * @Title:queryById
	 * @Description:根据主键获取指定记录
	 * @param id
	 * @return T
	 */
	T queryById(K id);

	/**
	 * <p>
	 * 说明：查询所有数据
	 * </p>
	 * 
	 * @Title:queryAll
	 * @return List<T>
	 */
	List<T> queryAll(T bean);

	/**
	 * <p>
	 * 说明：查询所有数据
	 * </p>
	 * 
	 * @Title:queryAll
	 * @param isPage 是否分页
	 * @return List<T>
	 */
	List<T> queryAll(T bean, boolean isPage);

	/**
	 * <p>
	 * 说明：模糊查询所有记录
	 * </p>
	 * 
	 * @Title:queryLikeAll
	 * @param bean
	 * @return List<T>
	 */
	List<T> queryLikeAll(T bean);

	/**
	 * <p>
	 * 说明：模糊查询所有记录
	 * </p>
	 * 
	 * @Title:queryLikeAll
	 * @param bean
	 * @param isPage 是否分页
	 * @return List<T>
	 */
	List<T> queryLikeAll(T bean, boolean isPage);

	/**
	 * <p>
	 * 说明：查询记录数
	 * </p>
	 * 
	 * @Title:queryAllCount
	 * @param bean
	 * @return int
	 */
	int queryAllCount(T bean);

	/**
	 * <p>
	 * 说明：模糊查询所有记录数
	 * </p>
	 * 
	 * @Title:queryLikeAllCount
	 * @param bean
	 * @return int
	 */
	int queryLikeAllCount(T bean);
}